//package edu.cueb.wmis.config.security.component;
//
//
//import edu.cueb.wmis.pojo.Menu;
//import edu.cueb.wmis.pojo.Role;
//import edu.cueb.wmis.service.IMenuService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.security.access.ConfigAttribute;
//import org.springframework.security.access.SecurityConfig;
//import org.springframework.security.web.FilterInvocation;
//import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
//import org.springframework.stereotype.Component;
//import org.springframework.util.AntPathMatcher;
//
//import java.util.Collection;
//import java.util.List;
//
///**
// * 权限控制 根据请求url分析请求所需的角色
// */
//@Component
//public class CustomFilter implements FilterInvocationSecurityMetadataSource {
//
//    @Autowired
//    private IMenuService menuService;
//    @Autowired
//    AntPathMatcher antPathMatcher;
//    @Override
//    public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException {
//        try {
//            String requestUrl = ((FilterInvocation) object).getRequestUrl();
//            List<Menu> menus = menuService.getMenusByRole();
//            for(Menu menu : menus){
//                //判断请求url与菜单角色是否匹配
//                if(antPathMatcher.match(menu.getUrl(),requestUrl)){
//                    String[] str = menu.getRoles().stream().map(Role::getName).toArray(String[]::new);
//                    return SecurityConfig.createList(str);
//                }
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        //没匹配的url默认登录即可访问
//        System.out.println("cf");
//        return SecurityConfig.createList("ROLE_LOGIN");
//    }
//
//    @Override
//    public Collection<ConfigAttribute> getAllConfigAttributes() {
//        return null;
//    }
//
//    @Override
//    public boolean supports(Class<?> clazz) {
//        return false;
//    }
//}
